草庐IT

MySQL Workbench 符号引用

全部标签

c++ - 如何防止将空指针转换为引用

在我的应用程序中,我有一个代表“系统”的单例。这个对象首先创建最后销毁,所有其他对象都应该由它管理,这意味着,每个对象将直接或间接地由这个system对象创建(在其run方法)并且所有对象都将(希望)在系统变得不可用之前被删除。问题是对system对象的可选访问(通过指针)引入了大量非空检查代码。我知道取消引用空指针会导致未定义的行为。使用旧的C-assert是我能做的最好的吗?//thisismostlypseudo-code,butshouldcompileif//thereisanappropriateMySysheader#include"MySys.h"classMySysI

c++ - 方法声明后的引用符号 C++

在什么情况下使用const&而不是仅使用const来声明方法或函数是有益的?我知道使用const表示此方法不会修改类的成员,但是当我在后面添加引用符号时到底发生了什么?示例:intmyclass::getInteger()const&{returntheInt;}顺便问一下,这是所谓的引用限定符吗?更重要的是关于getInteger方法,引用符号说明了什么?谢谢! 最佳答案 是的,这是一个ref-qualifiedmemberfunction.右侧的左值引用表示法使该函数只能在myclass的左值上调用,即:myclassc;c.g

c++ - 范围变量循环导致返回局部变量的地址引用?

//g++--std=c++17test.cpp-I/usr/local/include-L/usr/local/lib-lboost_system-Wall-pedantic-Wreturn-type-Wstrict-aliasing-Wreturn-local-addr-fsanitize=address-g//LD_LIBRARY_PATH=/usr/local/lib./a.out#include#includenamespacefs=boost::filesystem;classA{public:fs::pathpath_;constfs::path&path()const{

c++ - 是基类型的有符号/无符号部分还是限定符

Wikipage声称C++中的限定符是const和volatile。Thisanswer告诉unsigned、unsigned和short等也是限定符。虽然问题确实提到了它是关于C的,但Wikipage在C方面也没有说明。对于C,限定符是const、volatile、restrict和_Atomic。StackOverflow的qualifier标签的扩展消息框说Aqualifieraddsanextra"quality",suchasspecifyingvolatilityorconstnessofavariable“Addanextraquality”,从引文来看,singed/u

c++ - 去修饰的 C++ 符号的歧义

_ZNSaIwEC1Ev_ZNSaIwEC2Ev这两个C++符号不同但被分解(使用C++filt或类似实用程序)为相同的形式:std::allocator::allocator()std::allocator::allocator()为什么会这样?可能是解码器的缺陷还是其他原因? 最佳答案 g++使用由ItaniumABI指定的名称修改方案(和其他实现细节).在关于manglingofconstructorsanddestructors的部分,我们看到:::=C1#completeobjectconstructor::=C2#bas

c++ - 在定义明确的 C++ 中,从引用中获取的指针是否可以为空?

这个问题的动机是clang和gcc对检查指针值与nullptr的不平衡处理。对于this,它们都发出警告,但对于通过在对象上使用address-of运算符获取的指针,它们保持安静。我很确定这样的指针应该始终有效,因为我们遇到过错误,因为现代编译器从快乐的90年代实际触发的地方删除了对c++代码的此类检查。令我困惑的是为什么编译器在一般情况下保持安静。if是否有可能以某种方式触发,或者这只是两个主要编译器的设计决定?在我开始编写补丁或窃听编译器开发人员之前,我想以确保我没有遗漏任何东西。Toyexample:#includeclassA{voidf(){if(!this){std::co

c++ - Visual Studio 2017 允许在构造函数中使用自身初始化引用成员。它真的是合法的 C++ 吗?

我刚刚在我的代码中发现了一个非常危险的错误,我觉得它应该被编译器捕获。我错了吗?本质上,允许类的引用成员在构造函数中自行初始化。下面是在VisualStudio2017中编译而没有错误或警告的测试代码:structfoo{foo():reference(reference){}int&reference;};intmain(){foofooOb;}更新:我看到这里有一个2009年的类似问题。其他编译器在2017年的行为是否相同,还是VS2017问题?如果他们这样做了,这有点向我暗示这是合法的C++,但我不明白它怎么可能。 最佳答案

c++ - react 线程需要其引用共享状态的 std::shared_future 的 OWN COPY

我对EffectiveModernC++的第270页有疑问,作者是ScottMeyers。第5/6行,他写道:“唯一的微妙之处在于每个react线程都需要引用共享状态的std::shared_future的自己的拷贝,...”我的问题是:为什么我们必须将std::shared_future的拷贝传递给每个线程中的每个lambda函数?而先验的,我没有看到通过引用传递它有任何问题,这样就有一个独特的共享状态可以被不同的线程使用?我写了一段改编自DrScottMeyers的书的代码,即使我通过了sfparreference,它仍然有效。因此,是否可以通过引用传递它?#include#inc

c++ - 奇数重复符号错误

对于一个学校项目,类(class)被要求编写一个String类来模仿STLstring类。我已经编写了所有代码,但链接器似乎被我的一个运算符捕获了。共有三个文件,String.h、String.cpp、test2.cpp我的Makefile看起来像CC=gccCXX=g++CXXFLAGS+=-Wall-WextraLDLIBS+=-lstdc++all:test2test2:test2.oString.otest2.o:test2.cppString.hString.o:String.cppString.hmake输出如下:g++-Wall-Wextra-c-otest2.otest

C++ 可以将本地类引用传递给函数吗?

我想知道是否允许以下​​内容:templatevoidfunction(C&);voidfunction(){class{}local;function(local);}谢谢 最佳答案 目前不允许。但它在C++0x中受支持。当前标准在14.3.1/2Alocaltype,atypewithnolinkage,anunnamedtypeoratypecompoundedfromanyofthesetypesshallnotbeusedasatemplate-argumentforatemplatetype-parameter.也就是说